"""
这是主要程序运行类
"""
#引入student模块.pyl里面的Student
from 期末项目.student.student import Student
class StudentManager(object):
    print("这是student模块的管理系统")
    #创建一个列表，用来临时存储学生数据
    def __init__(self):
        self.stu_list =[]#创建一个空列表
    #定义一个run方法来执行代码
    def run(self):
        print("加载student.data文件内部数据！！！")
        self.load()#加载功能，加载到文件stv_list
        while True:
            print("显示功能菜单:")
            self.xianshi()#显示功能
            """
            int(a):把a转换成整数
            input:键盘输入，键盘输入默认是字符串类型
            """
            xz1 = int(input("请输入你选择的功能："))
            if xz1 ==1:
                print("增加功能")
                self.add_stu()
                print()#主要起换行作用
            elif xz1 == 2:
                print("删除功能")
                self.del_stu()
                print()
            elif xz1 == 3:
                print("修改功能")
                self.up_stu()
                print()
            elif xz1 == 4:
                print("查询一个功能")
                self.seOne_stu()
                print()
            elif xz1 == 5:
                print("查询全部功能")
                self.seAll_stu()
                print()
            elif xz1 == 6:
                print("保存数据到文件功能")
                self.sava_stu()
                print()
            elif xz1 == 7:
                print("退出student模块")
                break #结束循坏
    def xianshi(self):
        print("1，增加学生功能")
        print("2，删除学生功能")
        print("3，修改学生功能")
        print("4，查询一个学生功能")
        print("5，查询全部学生功能")
        print("6，保存学生功能")
        print("7，退出系统功能")
    #增加功能
    def add_stu(self):
        name = input("请输入学生的姓名:")
        age = input("请输入学生的年龄：")
        gender = input("请输入学生的性别:")
        tel = input("请输入学生的电话号码：")
        # 把键盘输入的数据保存到项目里面
        student = student(name, age, gender, tel)
        # 把这个对象添加到stv_list对象里面  通过append方法加入
        self.stu_list.append(student)
        # 通过for循坏来查看是否添加成为
        print("下面是stv_list列表内部的数据")
        for i in self.stu_list:
            print(i)#表示还不知道内容是什么，先跳过
    #删除功能
    def del_student(self):
        if len(self.stu_list)==0:
            print("你的列表内部没有数据")
        else:
            name = input("请输入你要删除的学生姓名：")
            for i in self.stu_list:
                if i.name == del_name:
                    self.stu_list.remove(i)
                else:
                     print("没有你想要的学生！！！")
            print("下面是stv_list列表内部的数据")
            for i in self.stu_list:
                print(i)
    #修改功能
    def up_stu(self):
        """1，判断列表内部是否有数据
        """
        if len(self.stu_list)==0:
            print("你的列表没有数据")
        else:
            up_name = input("请输入你要修改的学生姓名：")
            for i in self.stu_list:
                if i.name == up_name:
                    i.name = input("请输入学生新的姓名：")
                    i.age = input("请输入学生新的年龄：")
                    i.gender = input("请输入学生新的性别：")
                    i.tel = input("请输入学生新的电话号码:")
                else:
                    print("没有你想要修改的学生！！！")
            print("下面是stu_list列表内部的数据")
            for i in self.stu_list:
                print(i)
    #查询一个
    def seOne_stu(self):
        if len(self.stu_list)==0:
            print("你的列表没有数据")
        else:
            seOne_name = input("请输入你要查询的学生姓名：")
            for i in self.stu_list:
                if i.name == seOne_name:
                    print(i)
                else:
                    print("没有你想要查询的学生！！！")
    #查询全部
    def seAll_stu(self):
        if len(self.stu_list)==0:
            print("你的列表没有数据")
        else:
            for i in self.stu_list:
                print(i)
    #保存功能
    def sava(self):
        #第一步，创建一个文件
        f = open("student.data","w",encoding="UTF-8")
        #i.__init__ 每一个i都是student对象
        new_list = [i.__init__ for i in self.stu_list]
        print(new_list)
        #f.write(数据)：把括号内部数据写入文件
        f.write(str(new_list))
        f.close()
    #加载文件功能
    def load(self):
        try:
            f = open("student.data","r",encoding="UTF-8")#r表示读取操作，读取文件内部数据
        except:#相当于java中的catch模块
            f = open("student.data", "w", encoding="UTF-8")
        else:#如果try里面没有出现异常，就执行else里面的代码
            data = f.read()#读取使用的是read方法
            new_list = eval(data)#把字符串转换成字典
            #把数据存储到对象里面
            self.stu_list = [Student(i['name'],i['age'],i['gender'],i['tel'])
            for i in  new_list]


